package test.Droidlogin;

import java.util.ArrayList;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;

import org.json.JSONException;
import org.json.JSONObject;

//import test.Droidlogin.Login.asynclogin;
import test.Droidlogin.library.Httppostaux;

//import android.R.bool;
import android.app.Activity;
//import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.net.Uri;
//import android.content.Intent;
//import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.IBinder;
//import android.os.SystemClock;
import android.os.Vibrator;
//import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
//import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.TextView;
import android.widget.Toast;
/*PANTALLA OPCIONES*/
public class OptionScreen extends Activity {
	/*variables*/
	String user;
	String varLlamada="0",varMensaje="0",varFoto="0",varVideo="0";
	TextView txt_usr, logoff;
	Button reset,save;
	CheckBox llamadas,mensajes,fotos,videos;
	Httppostaux post2;
	
	/*Variable para el servicio*/
	private Callregister servicio;
	/*JSON*/
	JSONParser jsonParser = new JSONParser();
	
	/*direcciones que se van a necesitar*/
	//String IP_Server="192.168.0.196:8000";//IP DE NUESTRO PC
	String IP_Server="77.230.170.100.12:8000";//IP DE NUESTRO PC
	String URL_connectsave="http://"+IP_Server+"/droidlogin/save.php";//ruta en donde estan nuestros archivos
	String URL_connectreset="http://"+IP_Server+"/droidlogin/reset.php";//ruta en donde estan nuestros archivos
	String URL_connectresetLlamada="http://"+IP_Server+"/droidlogin/resetLlamada.php";
	String URL_connectresetMensaje="http://"+IP_Server+"/droidlogin/resetMensaje.php";
	String URL_connectresetFoto="http://"+IP_Server+"/droidlogin/resetFoto.php";
	String URL_connectresetVideo="http://"+IP_Server+"/droidlogin/resetVideo.php";
	boolean result_back;
    
    
    
    
	public void onCreate(Bundle savedInstanceState) 
	{

		super.onCreate(savedInstanceState);
		setContentView(R.layout.lay_screen);

		logoff= (TextView) findViewById(R.id.botAndroidClose);  
		//checkbox button
		llamadas = (CheckBox)findViewById(R.id.chkAndroid1);
		mensajes = (CheckBox)findViewById(R.id.chkAndroid2);
		fotos    = (CheckBox)findViewById(R.id.chkAndroid3);
		videos   = (CheckBox)findViewById(R.id.chkAndroid4);
		//create button
		save= (Button) findViewById(R.id.botAndroidSave);
		reset= (Button) findViewById(R.id.botAndroidReset);

		/*invoco al servicio*/
		doBindService();
		
		/*Recojo variables  globales de la aplicacion*/
		SharedPreferences prefs =getSharedPreferences("MisPreferencias",Context.MODE_PRIVATE);
	    user = prefs.getString("user", "none");
		
	    
		/****************************************************************/
		/****************************************************************/
		//CHECKBOX
       
		//CHECKBOX DE LLAMADA
        llamadas.setOnClickListener(new CheckBox.OnClickListener()
        {
            public void onClick(View v) 
            {
    			if(llamadas.isChecked())
                {
                	varLlamada="1";
                }
				else
				{	
					varLlamada="0";        
				}
			
            }
        });
        //CHECKBOX DE MENSAJE
        mensajes.setOnClickListener(new CheckBox.OnClickListener()
        {
            public void onClick(View v) 
            {
    			if(mensajes.isChecked())
                {
                	varMensaje="1";
                }
				else
				{	
					varMensaje="0";        
				}    
            }
        });
        //CHECKBOX DE FOTO
        fotos.setOnClickListener(new CheckBox.OnClickListener()
        {
            public void onClick(View v) 
            {
    			if(fotos.isChecked())
                {
                	varFoto="1";
                }
				else
				{	
					varFoto="0";        
				}       
            }
        });       
        //CHECKBOX DE VIDEO
        videos.setOnClickListener(new CheckBox.OnClickListener()
        {
            public void onClick(View v) 
            {
    			if(videos.isChecked())
                {
                	varVideo="1";
                }
				else
				{	
					varVideo="0";        
				}        
            }
        });
        
        /****************************************************************/
        /****************************************************************/
	
        //BOTON PARA SAVE
		save.setOnClickListener(new View.OnClickListener()
		{
			public void onClick(View view)
			{

				String usuario=user;
				String call   =varLlamada;
				String sms    =varMensaje;
				String photo  =varFoto;
				String video  =varVideo;
				//si pasamos esa validacion ejecutamos el asynctask pasando el usuario y clave como parametros	
		
				new asyncSave().execute(usuario,call,sms,photo,video);
		
			}

		});
     
		//BOTON PARA RESETEARSE

		reset.setOnClickListener(new View.OnClickListener()
		{
			public void onClick(View view)
			{

				String usuario=user;
				//si pasamos esa validacion ejecutamos el asynctask pasando el usuario y clave como parametros	
				//boolean res = true;
				new asyncReset().execute(usuario);
				//res=resetconection(user);
			}

		});

		//BOTON PARA DESLOGEARSE
		logoff.setOnClickListener(new View.OnClickListener()
		{

			public void onClick(View view){
				//'cerrar  sesion' nos regresa a la ventana anterior.      
				finish(); 
			}
		});	               
	}

    //vibra y muestra un Toast
    public void err_opc(){
    	Vibrator vibrator =(Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
	    vibrator.vibrate(200);
	    Toast toast1 = Toast.makeText(getApplicationContext(),"Error:no se ha podido acceder a la base de datos", Toast.LENGTH_SHORT);
 	    toast1.show();    	
    }

	//Definimos que para cuando se presione la tecla BACK no volvamos para atras  	 
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event)  {
		if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
			// no hacemos nada.
			return true;
		}

		return super.onKeyDown(keyCode, event);
	}

	//Guardo opciones
	public boolean saveconection(String username,String llamada, String mensaje, String foto, String video) 
	{	
        // Building Parameters
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        //añado parametros
        params.add(new BasicNameValuePair("usuario", username));
        params.add(new BasicNameValuePair("llamadas", llamada));
        params.add(new BasicNameValuePair("mensajes", mensaje));
        params.add(new BasicNameValuePair("fotos", foto));
        params.add(new BasicNameValuePair("videos", video));
        
        
        JSONObject json = jsonParser.makeHttpRequest(URL_connectsave,"POST", params);

        return true;
		
		
	}


/*		CLASE ASYNCTASK PARA RESET
 * 
 * usaremos esta para poder mostrar el dialogo de progreso mientras enviamos y obtenemos los datos
 * podria hacerse lo mismo sin usar esto pero si el tiempo de respuesta es demasiado lo que podria ocurrir    
 * si la conexion es lenta o el servidor tarda en responder la aplicacion sera inestable.
 * ademas observariamos el mensaje de que la app no responde.     
 */
    
    class asyncReset extends AsyncTask< String, String, String > 
    {
    	String user;/*variable que contendra el numbre del usuario*/
        private ProgressDialog pDialog2 = new ProgressDialog(OptionScreen.this);/*objeto de dialogo de espera*/
        private int var1,var2,var3,var4;
    	protected void onPreExecute() 
    	{
        	//para el progress dialog
    
            pDialog2.setMessage("Reseteando....");
            pDialog2.setIndeterminate(false);
            pDialog2.setCancelable(false);
            pDialog2.show();
          
            
        }
 
		protected String doInBackground(String... params) 
		{
			//obtnemos usr y pass
			String user=params[0];
			
			//enviamos y recibimos y analizamos los datos en segundo plano.
		       // Building Parameters

	        List<NameValuePair> params2 = new ArrayList<NameValuePair>();
	        params2.add(new BasicNameValuePair("usuario", user));
	        
	        // getting JSON Object
	        
	        JSONObject jsonLlamada = jsonParser.makeHttpRequest(URL_connectresetLlamada,"POST", params2);
	        JSONObject jsonMensaje = jsonParser.makeHttpRequest(URL_connectresetMensaje,"POST", params2); 
	        JSONObject jsonFoto    = jsonParser.makeHttpRequest(URL_connectresetFoto,"POST", params2);
	        JSONObject jsonVideo   = jsonParser.makeHttpRequest(URL_connectresetVideo,"POST", params2);
	          
	          
	        

	        //varLlamada = jsonLlamada.toString();
	        try {
				var1 = jsonLlamada.getInt("valor");
				var2 = jsonMensaje.getInt("valor");
				var3 = jsonFoto.getInt("valor");
				var4 = jsonVideo.getInt("valor");
			} catch (JSONException e) {
				
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
       
    		return null;
		}
       
		/*Una vez terminado doInBackground segun lo que halla ocurrido 
		pasamos a la sig. activity
		o mostramos error*/
        
        protected void onPostExecute(String result) 
        {
	        /*************************************/
	        //modifico estado de las casillas
	        /**************************************/
	        if(var1 ==1 )
	        {
	     	    llamadas.setChecked(true);
	        }
	        else
	        {	        
	     	   llamadas.setChecked(false);
	        }

	        if(var2==1)
	        {
	     	   mensajes.setChecked(true);
	        }
	        else
	        {
	     	   mensajes.setChecked(false);
	        }
	        if(var3==1)
	        {
	     	   videos.setChecked(true);
	        }
	        else
	        {
	     	   videos.setChecked(false);
	        }
	        if(var4==1)
	        {
	     	   fotos.setChecked(true);
	        }
	        else
	        {
	     	   fotos.setChecked(false);
	        }
	        
           pDialog2.dismiss();//ocultamos progess dialog
					
        }
		
        
    }
    
    /*		CLASE ASYNCTASK PARA SAVE
     * 
     * usaremos esta para poder mostrar el dialogo de progreso mientras enviamos y obtenemos los datos
     * podria hacerse lo mismo sin usar esto pero si el tiempo de respuesta es demasiado lo que podria ocurrir    
     * si la conexion es lenta o el servidor tarda en responder la aplicacion sera inestable.
     * ademas observariamos el mensaje de que la app no responde.     
     */
        
        class asyncSave extends AsyncTask< String, String, String > 
        {
        	 
        	String user;/*variable que contendra el numbre del usuario*/
        	String call;
        	String sms;
        	String photos;
        	String videos2;
            private ProgressDialog pDialog2 = new ProgressDialog(OptionScreen.this);/*objeto de dialogo de espera*/
        	
        	protected void onPreExecute() 
        	{
            	//para el progress dialog
        
                pDialog2.setMessage("Guardando....");
                pDialog2.setIndeterminate(false);
                pDialog2.setCancelable(false);
                pDialog2.show();
                
            }
     
    		protected String doInBackground(String... params) 
    		{
    			user=params[0];
    			call=params[1];
    			sms=params[2];
    			photos=params[3];
    			videos2=params[4];
    			//enviamos y recibimos y analizamos los datos en segundo plano.
        		saveconection(user, call, sms, photos, videos2);

        		return null;
    		}

            
            protected void onPostExecute(String result) 
            {
            	
               pDialog2.dismiss();//ocultamos progess dialog
              

            }
    		
            
        }
        /*Funciones para llamar al servicio*/
        private ServiceConnection mConnection = new ServiceConnection() {
			
			@Override
			public void onServiceDisconnected(ComponentName name) {
				servicio = null ;
			}
			
			@Override
			public void onServiceConnected(ComponentName name, IBinder service) {
				servicio = ((Callregister.MyBinder) service).getService();
			}
		};
		
		void doBindService()
		{
			
			bindService(new Intent(this,Callregister.class),mConnection,
					Context.BIND_AUTO_CREATE);
		}

}
    

   
     
    //-----------------------------------------------------------------------
    
    

